#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <string.h>

int pid_neto;

void killer(int signo) {
	kill(pid_neto, SIGKILL);

}

int main(int argc, char **argv) {

	int delay = atoi(argv[1]);
	int tempo = atoi(argv[2]);
	int numeroProgramas = argc - 3;

	// armadilhar, mas para quê ensinar o pai quando basta ensinar o filha mais à frente
	//portanto vai ser comentado e feito dentro do filho esta instrução

	//signal(SIGALRM, killer);

	int i = 0;
	while (i < numeroProgramas) {

		pid_t pid = fork();

		if (pid == 0) {

			pid_t pid_neto = fork();
			if (pid_neto == 0) {
				execl(argv[i + 3], argv[i + 3], "", NULL);
				perror("Exec");
				exit(EXIT_FAILURE);
			} else {
				signal(SIGALRM, killer);
				alarm(tempo);
				wait(NULL);
			}
			exit(EXIT_SUCCESS);
		} else {
			sleep(delay);
		}
		i++;
	}

	int j = 0;
	for (j = 0; j < numeroProgramas; j++) {
		wait(NULL);
	}

	return 0; //:)
}
